package ar.edu.unju.fi.model.dao.impl;

import java.util.Date;
import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.criterion.Restrictions;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import ar.edu.unju.fi.model.dao.PedidoDAO;
import ar.edu.unju.fi.model.domain.Pedido;



public class PedidoDAOImpl extends HibernateDaoSupport implements PedidoDAO{

	public List<Pedido> getAll(long pedidoId) {
		
		return null;
	}

	public List<Pedido> getAll() {
		logger.info("Cargando todos los pedidos");
		Criteria criteria = getSession().createCriteria(Pedido.class);
		return criteria.list();
		
	}

	public Pedido validateCode(Integer pedidoId) {
		logger.info("cargando lista validad por pedidoId");
		Criteria criteria = getSession().createCriteria(Pedido.class);
		criteria.add(Restrictions.eq("pedido_id",pedidoId));
		return (Pedido) criteria.uniqueResult();
	}

	public void insert(Pedido pedido) {
		
	}

	public void save(Pedido pedido) {
		logger.info("guardando el pedido");
		try {
			getHibernateTemplate().save(pedido);
		} catch (Exception e) {
			logger.error("Error al guardar el pedido");
		}
	}

	public void update(Pedido pedido) {
		logger.info("actualizando el pedido");
		try {
			getHibernateTemplate().update(pedido);
		} catch (Exception e) {
			logger.error("Error al actualizar el pedido");
		}
	}
	

	public Pedido get(Integer pedidoId) {
		return (Pedido) getHibernateTemplate().get(Pedido.class, pedidoId);
	}

	public List<Pedido> getFecha(Date fecha) {
		Criteria criteria = getSession().createCriteria(Pedido.class);
		criteria.add(Restrictions.eq("fechaPedido",fecha));
		return criteria.list();
	}

	
	public List<Pedido> getAllList(Integer idUsuario) {
		
		Criteria criteria = getSession().createCriteria(Pedido.class);
		System.out.println(idUsuario);
        if(!idUsuario.toString().isEmpty())
            criteria.add(Restrictions.ilike("usuario_creacion", "%"+idUsuario+"%"));
        return criteria.list();
		
	}

	public List<Pedido> getAllEstado(String estado) {
		
		Criteria criteria = getSession().createCriteria(Pedido.class);
		System.out.println(estado);
        if(!estado.isEmpty())
            criteria.add(Restrictions.ilike("estado", "%"+estado+"%"));
        return criteria.list();
		
	}
}
